// void, Obj This, point pt
Hero this;
Obj target;

Sleep(rand(10)+10);
this = This.AsHero();

{
	if(!.IsValid) return;
	.army.SetCommand("move", pt);
	while(!.Goto(pt, 0, 3000, false, 0))
	{
		if(.TimePastLastAttack() > 5000)
		{
			//.pr("hero::retreat:seems safe to gather formation");
			.FormSetupAndMoveTo(pt, 0, 0, true);
			while(.HasPath())
				.FormKeepMoving(3000);
			return;
		}
	}
	.FormSetupAndMoveTo(pt+.GetDir(), 0, 0, true);
	while(.HasPath())
	{
		.FormKeepMoving(1500);
	}

}
Sleep(5000);